<?php

namespace app\common\lib;

/***
 * 日志类 存储在本地runtime路径下
 * @param type 可定义为不同的日志路径 如 admin
*/
class OperationLog
{
    private $baseDir; //基本路径
    private $subDir; //子目录
    private $fileName; //文件名称及后缀

    /**
     * 构造
     * $type  admin  index  api 等
    */
    public function __construct($type='admin')
    {
        $this->baseDir = app()->getRootPath()."runtime/operation_log/".$type; //基本路径
        $this->subDir = date("Ym");  //子目录 年月份为名
        $this->fileName = date("Ymd") . ".txt"; //文件名称及后缀 年月份天为名
    }

    /**
     * 记录日志
     * @param $content 日志内容
     *
    */
    public function log($content)
    {
        //是否存在文件 不存在则新增
        $fileDir = $this->baseDir . "/" . $this->subDir;
        if (!is_dir($fileDir)) {
            mkdir($fileDir, 0777, true);
        }

        $filePath = $fileDir . "/" . $this->fileName; //文件的完整路径
//        $ip = request()->ip();
//        $logContent = date("Y-m-d H:i:s") . "--" . $ip . "--" . $contentStr . "\r\n"; //每一条加上时间和ip的头部
        $logContent =json_encode($content)."\r\n"; // 转为json_encode 并 每条记录换行
        error_log($logContent, 3, $filePath); //写入文件中
    }

    /**
     * 获取并解析日志文件
     * @param $time 为时间戳
    */
    public function get_log($time){
        $list=[];
        $sub = date('Ym',$time);
        $name = date('Ymd',$time).".txt";
        $file= $this->baseDir . "/" . $sub. "/" .$name;

        //是否存在
        if(file_exists($file)){
            $data = file_get_contents($file);
            //内容以换行符分割为数组
            $data=explode("\r\n",$data);
            if(is_array($data)){
                foreach ($data as $key=>$vs){
                    if(!empty($vs)) {
                        $list[] = json_decode($vs, true);
                    }
                }
            }
        }
        return $list;
    }

    /**
     * 删除日志
     * @param $time 为文件名
     */
    public function del_log($time){

        $sub = date('Ym',$time);
        $name = date('Ymd',$time).".txt";
        $file= $this->baseDir . "/" . $sub. "/" .$name;

        //是否存在
        if(file_exists($file)){
            unlink($file); //删除文件
        }
        return true;
    }
}